package tote.services;

import java.util.List;

import javax.faces.model.SelectItem;

import tote.model.BetByGroup;
import tote.model.BetByMatch;
import tote.model.Match;
import tote.model.News;
import tote.model.Participant;
import tote.model.Result1;
import tote.model.Result4;
import tote.model.Result5;
import tote.model.Result6;
import tote.model.StagesTotal;
import tote.model.Team;
import tote.model.User;

/**
 * A service interface for retrieving hotels and bookings from a backing repository. Also supports the ability to cancel
 * a booking.
 */
public interface UserService {

    public List<StagesTotal> findStagesTotal(SearchCriteria sc);

    public List<Result1> findResultH1(SearchCriteria sc);

    public List<Result1> findResult1(SearchCriteria sc);

    public List<Result1> findResultH2(SearchCriteria sc);

    public List<Result1> findResult2(SearchCriteria sc);

    public List<Result1> findResultH3(SearchCriteria sc);

    public List<Result1> findResult3(SearchCriteria sc);

    public List<Result4> findResultH4(SearchCriteria sc);

    public List<Result4> findResult4(SearchCriteria sc);

    public List<Result5> findResultH5(SearchCriteria sc);

    public List<Result5> findResult5(SearchCriteria sc);

    public List<Result6> findResultH6(SearchCriteria sc);

    public List<Result6> findResult6(SearchCriteria sc);

    public List<Result6> findResultH7(SearchCriteria sc);

    public List<Result6> findResult7(SearchCriteria sc);

    public List<Participant> findParticipants(SearchCriteria sc);

    public List<News> findNews();

    public List<BetByMatch> findBetsByMatch(Integer tourid);

    public void saveBetsByMatch(Integer tourid, List<BetByMatch> list);

    public List<BetByGroup> findBetsByGroup();

    public List<BetByGroup> findBetsByGroup(String username);

    public void saveBetsByGroup(List<BetByGroup> list);

    public Integer getCurrentTourId();

    public Integer getNextTourId();

    public String getNameByTourId(Integer tourid);

    public String getCurrentTourName();

    public String getNextTourName();

    public String getPrintingTime();

    public String getNextTourBetsFinishedTime();

    public List<BetByGroup> findPlacesInGroups();

    public boolean isCurrentUserAdmin();

    public Match findMatchById(Integer matchid);

    public String findTeamNameById(Integer teamid);

    public List<ResultColumn> getResultByGroups(SearchCriteria sc);

    public Team findTeamById(Integer teamid);

    public List<SelectItem> listTeams();

    List<User> findNoBetUsers(SearchCriteria sc);

}
